import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;



public class ClaseSubVista extends JPanel {
	public static final long serialVersionUID = 1L;

	public JComboBox combo;
	public JLabel label1;
	public JLabel label2;
	public JCheckBox comentado;
	public JTextField text1;
	public JTextField text2;
	public JTextField text3;
	public JButton borrar;
	public JButton agregar;
	ClaseSubVista me;

	public ClaseSubVista() {
		this(ClaseVista.Opciones.DataStage, false, "", "", "");
	}

	public ClaseSubVista(ClaseVista.Opciones opciones, boolean b,
			String text1Sel, String text2Sel, String text3Sel) {
		super();
		me = this;

		combo = new JComboBox(opciones.values());
		combo.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// getSelectedItem().toString()
				String comboSelect = combo.getSelectedItem().toString();
				if (comboSelect.equals("DataStage")) {
					comentado.setSelected(false);
					label1.setText("Proyecto");
					label2.setText("Job");
					text1.setVisible(true);
					label2.setVisible(true);
					text2.setVisible(true);
					text3.setVisible(false);
				} else if (comboSelect.equals("CopyA") || comboSelect.equals("CopyE")) {
					comentado.setSelected(false);
					label1.setText("Origen");
					label2.setText("Destino");
					text1.setVisible(true);
					label2.setVisible(true);
					text2.setVisible(true);
					text3.setVisible(false);
				} else if (comboSelect.equals("Refresco")) {
					comentado.setSelected(false);
					label1.setText("Programa");
					label2.setText("JCL");
					text1.setText("d:\\Batch\\Progs\\Nmc\\PublishProcessNET2.exe");
					text2.setText("");
					text1.setVisible(true);
					label2.setVisible(true);
					text2.setVisible(true);
					text3.setVisible(false);
				} else if (comboSelect.equals("Comentario")) {
					comentado.setSelected(true);
					label1.setText("Comentario");
					label2.setVisible(false);
					text1.setVisible(false);
					text2.setVisible(false);
					// text3.setText(text1.);
					text3.setVisible(true);
				}
			}
		});

		label1 = new JLabel("Proyecto", SwingConstants.CENTER);
		text1 = new JTextField(20);
		label2 = new JLabel("Job", SwingConstants.CENTER);
		text2 = new JTextField(20);
		text3 = new JTextField(20);
		text3.setVisible(false);

		comentado = new JCheckBox();
		comentado.setSelected(b);

		agregar = new JButton();
		try {
			Image mas = ImageIO.read(getClass().getResource("mas.png"));
			agregar.setIcon(new ImageIcon(mas));
		} catch (IOException e1) {
			JOptionPane.showMessageDialog(ClaseVista.myFrame,
					"Error al Agregar", "Error",
					JOptionPane.ERROR_MESSAGE);;// e1.printStackTrace();
		}
		agregar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if (((ClaseSubVista) me).getParent().getComponentCount() < 99) {
					int i;
					for (i = 0; ((ClaseSubVista) me).getParent()
							.getComponent(i) != me; i++) {
						;
					}
					me.getParent().add(new ClaseSubVista(), i + 1);
					ClaseVista.myFrame.pack();
					ClaseVista.myFrame.repaint();
				} else {
					JOptionPane.showMessageDialog(ClaseVista.myFrame,
							"No se pueden agregar mas de 99 pasos.", "Error",
							JOptionPane.ERROR_MESSAGE);
				}
			}
		});

		borrar = new JButton();
		try {
			Image equis = ImageIO.read(getClass().getResource("equis.png"));
			borrar.setIcon(new ImageIcon(equis));
		} catch (IOException e1) {
			JOptionPane.showMessageDialog(ClaseVista.myFrame,
					"Error al Borrar", "Error",
					JOptionPane.ERROR_MESSAGE);// e1.printStackTrace();
		}
		borrar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if (((ClaseSubVista) me).getParent().getComponentCount() > 1) {
					me.getParent().remove(me);
					ClaseVista.myFrame.pack();
					ClaseVista.myFrame.repaint();
				} else {
					JOptionPane
							.showMessageDialog(
									ClaseVista.myFrame,
									"No se pueden eliminar el unico paso. Salvo que quieras hacer un jcl vacio pero para eso no uses el JclEitor",
									"Error", JOptionPane.ERROR_MESSAGE);
				}
			}
		});

		combo.setSelectedItem(opciones);
		text1.setText(text1Sel);
		text2.setText(text2Sel);
		text3.setText(text3Sel);

		if (ClaseVista.Opciones.DataStage == opciones) {
			
			comentado.setSelected(b);
			label1.setText("Proyecto");
			label2.setText("Job");
			text1.setVisible(true);
			label2.setVisible(true);
			text2.setVisible(true);
			text3.setVisible(false);
		} else if (ClaseVista.Opciones.CopyA == opciones || ClaseVista.Opciones.CopyE == opciones) {
			comentado.setSelected(b);
			label1.setText("Origen");
			label2.setText("Destino");
			text1.setVisible(true);
			label2.setVisible(true);
			text2.setVisible(true);
			text3.setVisible(false);
		} else if (ClaseVista.Opciones.Refresco == opciones) {
			comentado.setSelected(b);
			label1.setText("Programa");
			label2.setText("JCL");
			text1.setVisible(true);
			label2.setVisible(true);
			text2.setVisible(true);
			text3.setVisible(false);
		} else if (ClaseVista.Opciones.Comentario == opciones) {
			comentado.setSelected(b);
			label1.setText("Comentario");
			label2.setVisible(false);
			text1.setVisible(false);
			text2.setVisible(false);
			// text3.setText(text1.);
			text3.setVisible(true);
		}

		combo.setMaximumSize(new Dimension(100, combo.getMinimumSize().height));
		label1.setMaximumSize(new Dimension(80, combo.getMinimumSize().height));
		text1.setMaximumSize(new Dimension(240, combo.getMinimumSize().height));
		label2.setMaximumSize(new Dimension(80, combo.getMinimumSize().height));
		text2.setMaximumSize(new Dimension(240, combo.getMinimumSize().height));
		agregar.setMaximumSize(new Dimension(30,
				combo.getMinimumSize().height - 1));
		borrar.setMaximumSize(new Dimension(30,
				combo.getMinimumSize().height - 1));
		text3.setMaximumSize(new Dimension(560, combo.getMinimumSize().height));

		setBorder(new EmptyBorder(5, 0, 5, 0));
		setLayout(new BoxLayout(me, BoxLayout.X_AXIS));

		add(comentado);
		add(combo);
		add(label1);
		add(text1);
		add(label2);
		add(text2);
		add(text3);
		add(agregar);
		add(borrar);
	}

}
